import tool.Node;
import tool.TreeNode;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/**
 * @Description: N 叉树的层序遍历
 * 给定一个 N 叉树，返回其节点值的层序遍历。（即从左到右，逐层遍历）。
 * 树的序列化输入是用层序遍历，每组子节点都由 null 值分隔（参见示例）。
 * @Date:Create in 9:52  2022/7/20
 */
public class levelOrder0429 {

    //BFS 广度优先遍历
    public static List<List<Integer>> levelOrder(Node root) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        if(root==null) return res;
        Queue<Node> que = new LinkedList<>();
        que.offer(root);

        while(!que.isEmpty()){
            List<Integer> item = new ArrayList<>();
            int len = que.size();
            while(len>0){
                Node node = que.poll();
                item.add(node.val);
                for(Node child:node.children){
                    que.offer(child);
                }
                len--;
            }
            res.add(item);
        }
        return res;
    }


}
